package base;

import java.util.Arrays;

/**
 * @AUTHOR LYF
 * @DATE 2022/2/14
 * @VERSION 1.0
 * @DESC
 * 1. 多线程基础
 *  (1)理解为什么需要多线程开发
 * （2）熟悉线程的状态模型和切换开销等
 * （3）熟悉线程的状态(NEW(新建),RUNNABLE(执行),BLOCKED(阻塞),
 * WAITING(等待),TIMED_WAITING,TERMINATED（终止）
 * （4）守护线程与非守护线程
 * （5）线程、进程、管程
 * （6）
 * 2. 结合OS理解
 * (1)CPU、内存、磁盘等资源
 * (2)线程切换上下文的开销，注重效率
 * 3. Java中线程
 * （1）sleep与wait的区别【https://www.cnblogs.com/AndyAo/p/8120150.html】
 * wait:Object对象，释放锁：wait，notify和notifyAll只能在同步控制方法或者同步控制块里面使用
 * sleep:Thread对象，未释放锁，可以用于任何地方 ,sleep必须捕获异常，而wait，notify和notifyAll不需要捕获异常
 * （2）run与start的区别【https://blog.csdn.net/ssssaaaawe/article/details/100511422】
 * 调用run()执行，start()是Thread中的启动方法，至就绪状态
 *  run()和start()的区别可以用一句话概括：单独调用run()方法，是同步执行；通过start()调用run()，是异步执行。
 */
public class ThreadStatus {
    public static void main(String[] args) {
        Arrays.stream(Thread.State.values()).toList().forEach(u->{
            System.out.println(u.name());
        });
        //Thread.currentThread().
    }
}
